Enterprise SDK changelog | Tarantool
Releases Enterprise SDK changelog

Enterprise SDK changelog

A Tarantool Enterprise SDK version consists of two parts:

<TARANTOOL_BASE_VERSION>-r<REVISION>

For example: 2.11.1-0-gc42d9735b-r589.

  • TARANTOOL_BASE_VERSION is the Enterprise version.
  • REVISION is the SDK revision. Besides Tarantool itself, it includes the tt utility, a set of open and closed source modules, and examples. Learn more from Package contents.

This release updates the platform’s key dependencies: Tarantool 2.11.9, a bugfix release of the 2.11 branch focused on improving stability and predictability. It also improves diagnostics and error handling for WAL failures, fixes hangs and WAL maintenance issues in Core, and delivers a large set of fixes in LuaJIT and the Datetime module. In addition, major ecosystem components (crud, vshard, metrics, tt-ee, cartridge, http) have been updated and refined, including safer behavior during rebalancing, fault-tolerant reads, and changes to HTTP TLS/mTLS configuration.

This is a bugfix release: 34 issues have been fixed since 2.11.8 (r702).

  • The 2.x series is the previous stable branch; upgrading to 3.x is recommended.
  • To upgrade from Tarantool 2.x to 3.x, see the upgrade procedure.

When upgrading the SDK, it is recommended to:

  • before starting the upgrade, ensure that all replica sets are healthy and in a consistent state;
  • perform the upgrade sequentially, verifying the cluster state after upgrading each component;
  • do not run data rebalancing while passing through CRUD 1.7.0 until the upgrade is fully completed.

Added:

  • A new built-in system event box.wal_error that is emitted every time Tarantool fails to commit a transaction to the write-ahead log (WAL) (gh-9405).

Fixed:

  • An issue where SSL errors were logged incorrectly when a client connection was closed.
  • A bug that could cause Tarantool to hang when using box.watch (gh-9632).
  • A bug where .xlog.inprogress files were not removed automatically on server startup when wal_dir was set and differed from the default (gh-12081).
  • A bug where a local space could not be truncated if the _truncate space was configured as synchronous (gh-12585).

  • If an ER_WAL_IO error occurs while writing to WAL, the current leader steps down immediately on the first such error.

Added:

  • Support for ffi.abi("dualnum") to detect LuaJIT mode (dual-number: distinguishing int64 integers from double).
  • New flags misc.memprof.available and misc.sysprof.available to detect whether the corresponding profiler is available in the current build. See LuaJIT memory profiler and LuaJIT platform profiler for details.

Fixed:

  • Incorrect IR_TBAR generation on aarch64.
  • Stack overflow handling when exiting a trace.
  • Dangling references to CType.
  • VM state shutdown after early OOM.
  • IR_MUL generation on x86/x64.
  • Incorrect merging of stp/ldp instructions on aarch64.
  • SCEV record invalidation when returning to a lower frame.
  • Build on macOS 15 / Clang 16.
  • IR_HREFK generation on aarch64.
  • Stack checks in varargs calls in GC64 builds.
  • Stack checks in pcall()/xpcall() in GC64 builds.
  • Allocation limit in non-JIT builds.
  • OOM handling when growing the stack in coroutine.resume() and lua_checkstack().
  • Recording loops with step -0 or control values NaN.
  • Error message generation when an error occurs while handling another error.
  • Dangling reference for an FFI callback.
  • BC_UNM for argument -0 in dual-number mode.
  • Unary minus narrowing in dual-number mode.
  • Recording of string.byte(), string.sub(), and string.find().
  • Missing type conversion for BC_FORI slots in dual-number mode.
  • Various corner cases in VM events.
  • Recording of constructor index resolution in the JIT compiler.
  • UBSan warning in unpack().

Fixed:

  • A crash due to an assert when parsing an ambiguous date: when the input contains both the day of year (yday, which implicitly defines month and day of month) and a calendar month (without day of month). Such cases are now detected and reported as an error.
  • tzoffset calculations for cases like new({timestamp=x, tz='Zone'}).
  • An inconsistency between dates created with new({tzoffset=x}) and d:set({tzoffset=x}) when d.tz ~= '' precedes set().
  • datetime.new() and datetime_object:set() now validate that timestamp is within the allowed range.
  • timestamp type checking in set().

For backward compatibility, the option compat.datetime_setfn_timestamp_type_check has been added. It is disabled by default (the “old” behavior), meaning no type check is performed. The “new” behavior with type checking is planned to become the default in 4.x.

Note

The modules listed below have changes in this release. If a module is not listed, it was not updated.

Note

Starting with CRUD 1.6.0, a vulnerability that allowed performing operations without sufficient privileges has been fixed. CRUD now strictly enforces access rights: a user can perform only the actions allowed by their privileges. If the application needs access to service spaces, the corresponding privileges must be granted explicitly.

See details in Reading and writing data with CRUD.

Safe mode and rolling-upgrade compatibility details are described in Upgrading the crud module (see Compatibility limitation during upgrade and Upgrade order).

Added:

  • crud.locate() to determine where a tuple is stored (memtx or vinyl). Works for spaces managed by the enterprise module cooler.
  • crud.len now supports options: mode, balance, prefer_replica, request_timeout.
  • Safe mode to prevent writing data to the wrong replica set during vshard rebalancing.
  • Metric tnt_crud_router_cache_clear_ts to help properly disable safe mode in a cluster.
  • Automatic switch to safe mode when rebalancing starts.
  • Ability to manually switch back to fast mode (fast mode).
  • Metric tnt_crud_storage_nil_bucket_id_compat_total to track operations performed without bucket_ref (compatibility mode with older routers).

Fixed:

  • Read-only operations (get, select, pairs, count, min, max) are now executed via healthy replicas even if all master nodes in the cluster are unavailable.
  • Storage compatibility with routers < 1.7.0: bucket_id = nil is now handled correctly in get, update, and delete. In this case, storage skips bucket referencing and logs a rate-limited warning about reduced rebalancing safety during rolling upgrades.
  • bucket_ref errors in crud.*_many methods are now returned as an array.
  • bucket_unref was moved out of the transaction.
  • Prevented duplicate metrics from being created on repeated init calls.
  • Prevented duplicate triggers on the _crud_settings_local space on repeated init calls.
  • A deadlock in crud.schema() after a schema reload error.
  • Removed metric tnt_crud_storage_safe_mode_enabled from the router.
  • Removed wrap_box_space_func_result wrapper to reduce allocations and speed up storage calls.
  • Optimize crud.select() and crud.pairs() pagination with after cursor by using native after option on Tarantool 2.10+ for O(1) cursor positioning.

Changed:

  • When switching to safe mode, the practice of marking/stopping iproto fibers in fast mode was discontinued; operation correctness on storage is validated via yield_checks in tests.
  • Switching to safe mode was moved from the on_commit trigger to on_replace.
  • Vinyl spaces always operate in safe mode.

Version 0.1.40 is fully compatible with previous vshard versions.

Added:

  • Ability to disable the log rate limiter via the consts module.
  • Calling vshard.router.info() and vshard.storage.info() is now allowed even when the router or storage is disabled. The functions now also return a new boolean field: is_enabled.
  • Improved logging for rebalancer and recovery related activities.

Fixed:

  • An issue where the old master node could not discover the new master instance within a replica set.
  • Connection leak: connections were not released by the garbage collector after reconfiguration or reload.
  • Transaction limitation when working with _bucket: previously, the on_commit trigger on _bucket blocked writes to other spaces within the same transaction (for example, from on_replace triggers). Such scenarios are now allowed: on_commit skips changes related to “foreign” spaces.
  • An issue where a user error was masked by the Transaction is active... error when calling a persistent function that throws an error and does not close a transaction on Tarantool versions earlier than 3.0.0-beta1-18. Now, vshard automatically closes such transactions and returns the original user error.
  • An issue where a connection to a replica was not automatically restored when it was closed either by vshard or by the user.

  • graphite: added support for sending metrics to multiple servers.
  • Removing a replica via box.space._cluster:delete() does not remove that replica’s information from metrics; it disappears only after a cluster restart.
  • Backward compatibility with the previous plugin version is preserved.
  • Behavior changes:
    • init now assigns a unique name to the created fiber based on the input graphite server options (if provided).
    • Added stop() to stop all fibers started by the plugin.

Added:

  • tt pack: added support for nested .packignore files in the root of a tt environment.
  • tt status: added the --format option to output status in JSON and YAML formats (machine-readable output).

Changed:

  • tt export: changed the default behavior for compound fields (arrays and maps): they are now exported in JSON format by default. To restore the previous behavior, use --compound-value-format=ignore.

Fixed:

  • Integrity checking for an application using the Cartridge directory layout (a single application whose root directory is the environment root).
  • An issue with Tarantool 3.5+: the instance did not stop when the periodic integrity check failed.
  • Minor fixes identified by the Svacer static analyzer and CVE scanners.

Changed:

  • Do not expand the file tree by default on the code page.
  • Update vshard dependency to 0.1.40.
  • Update membership dependency to 2.5.3.
  • Update cartridge-metrics-role dependency to 0.1.3.
  • Update graphql dependency to 0.3.1.
  • Update http dependency to 1.9.0.

Fixed:

  • Refactor synchronous spaces monitoring to consider the actual failover mode. Sync spaces warning is now logged when failover is configured in a mode that doesn’t support them (eventual, stateful without synchro_mode), instead of unconditionally at instance startup.
  • Added is_sync_spaces_supported() function to cartridge.failover module.
  • Sync spaces are now detected dynamically, allowing detection of spaces added at runtime.

The release introduces a new ssl_verify_client option and changes default behavior with provided ca_file parameter. Also a few bugs were fixed.

Added:

  • New ssl_verify_client option.

Fixed:

  • Do not recreate server if it’s address and port were not changed.
  • Server doesn’t change after updating parameters on config reload.

Breaking change:

Mutual TLS with ca_file option enabled by default.

Module http documentation.

  • Bumped checks version to 3.4.0.
  • Bumped Cartridge version to 2.16.4.
  • Bumped vshard version to 0.1.37.

  • Bumped tarantool-2.11 series to 2.11.8.

  • Moved CI files from sdk-ci repository.

  • Bumped tt-ee version to v2.11.0.

  • Replaced Cartridge EE with Cartridge CE 2.16.3.
  • Added CRUD CE 1.6.1.
  • Added expirationd CE 1.7.0.
  • Added ddl CE 1.7.1.
  • Bumped metrics version to 1.5.0.
  • Added migrations CE 1.1.0.
  • Added vshard CE 0.1.36.
  • Moved to Community Edition modules.

  • Fixed glibc package URL to archived.

  • Added manual trigger job to run tests to generate certificate of compliance. Ready for Astra Linux.

  • Bumped Cartridge version to 2.16.2.
  • Bumped metrics version to 1.4.0.
  • Bumped http version to 1.8.0.
  • Bumped crud-ee version to 1.7.4.

  • Bumped tt-ee version to v2.10.1.

  • Bumped Cartridge version to 2.16.0.

  • Bumped vshard-ee version to 0.1.34.

  • Bumped Cartridge version to 2.15.4.

  • Bumped tt-ee version to v2.10.0.

  • Bumped migrations-ee version to 1.3.2.

  • Bumped tarantool-2.11 series to 2.11.7.

  • Bumped Kafka version to 1.6.10.

  • Bumped Cartridge version to 2.15.3.

  • Bumped vshard-ee version to 0.1.33.

  • Bumped tt-ee version to v2.9.1.

  • Bumped tt-ee version to v2.9.0.
  • Bumped Cartridge version to 2.15.2.
  • Bumped membership version to 2.5.2.

  • Bumped Cartridge version to 2.15.1.
  • Bumped tt-ee version to v2.8.1.
  • Bumped vshard-ee version to 0.1.32.

  • Bumped Cartridge version to 2.15.0.
  • Bumped membership version to 2.5.1.
  • Bumped expirationd-ee version to 1.8.0.

  • Bumped tarantool-2.11 series to 2.11.6.
  • Bumped tt-ee version to v2.8.0.
  • Bumped migrations-ee version to 1.3.1.

  • Bumped Cartridge version to 2.14.0.
  • Bumped membership version to 2.4.6.

  • Bumped vshard-ee version to 0.1.31.
  • Bumped tt-ee version to v2.7.0.

  • Bumped tt-ee version to v2.6.0.
  • Bumped Cartridge version to 2.13.0.
  • Bumped vshard version to 0.1.30.
  • Bumped http version to 1.7.0.

  • Bumped tarantool-2.11 series to 2.11.5.
  • Bumped tt-ee version to v2.5.2.
  • Updated Kafka to 1.6.9.
  • Bumped tt-ee version to v2.5.1.
  • Bumped tt-ee version to v2.5.0.

  • Moved cartridge-auth-extension to stable directory.
  • Bumped crud-ee version to 1.7.1.
  • Bumped migrations-ee version to 1.3.0.

  • Bumped Cartridge version to 2.12.4.
  • Bumped vshard version to 0.1.29.
  • Bumped http version to 1.6.0.

  • Bumped tarantool-2.11 series to 2.11.4.
  • Bumped Cartridge version to 2.12.3.

  • Bumped tt-ee version to v2.4.0.
  • Bumped queue version to 1.4.2.
  • Added Migration Guide to bundle.

  • Updated Oracle to 1.5.0 for x86_64.
  • Updated oci to 21.14 for x86_64.

  • Moved to Enterprise Edition modules.
  • Fixed Docker image due to CentOS 7 EOL.
  • Fixed CI/CD workflows running inside CentOS 7.

  • Bumped tt-ee version to v2.3.1.
  • Enabled tt bash completion.
  • Updated Kafka to 1.6.8.

  • Updated Docker image.
  • Updated CMake to 3.20.6.
  • Installed dependencies for building OpenSSL.
  • Fixed installation of Python 3.6.

  • Enabled back aarch64 jobs.
  • Temporary disabled aarch64 jobs.

  • Adjusted CI workflows for 1.x-2.x development branch.
  • Deleted tarantool-master submodule.

  • Updated CRUD to 1.5.1.
  • Updated sideservice to 0.2.1.
  • Updated httpgo to 0.2.2.
  • Updated httpgo-crud to 0.1.1.

  • Updated cartridge-cli to 2.12.12.
  • tt used instead of tarantoolctl for build/test routines.
  • Made Tarantool and bundle versions correct.
  • Bumped tarantool-2.11 to 2.11.3.

  • Updated Cartridge to 2.10.0.
  • Updated membership to 2.4.4.
  • Updated ddl to 1.7.0.
  • Updated graphqlapi to 0.0.11.

  • Updated expirationd to 1.6.0.
  • Updated sharded-queue to 1.0.0.
  • Dropped building MacOS bundles.
  • Updated cartridge-cli to 2.12.11.

  • Updated tt-ee to 2.2.1.
  • Updated CRUD to 1.5.0.
  • Updated membership to 2.4.3.
  • Updated Cartridge to 2.9.0.

  • Updated bundle tt-ee aarch64.
  • Updated tt-ee to 2.2.0.
  • Fixed running Tarantool tests on RED OS.

  • Updated CRUD to 1.4.3.
  • Updated luatest to 1.0.1.
  • Updated migrations to 0.7.0.
  • Updated tt-ee to 2.1.2.

  • Updated Cartridge to 2.8.5.
  • Updated CRUD to 1.4.2.
  • Added frontend-core 8.2.2.
  • Updated membership to 2.4.2.
  • Updated sideservice to 0.2.0.
  • Updated tt-ee to 2.1.1.
  • Updated vshard to 0.1.26.

  • Updated httpgo to 0.2.1.
  • Added httpgo-crud 0.1.0.
  • Updated tarantool-2.11 to 2.11.2.

  • Updated tarantool-master to 3.0.0-beta1.

  • Updated Cartridge to 2.8.4.
  • Updated CRUD to 1.4.1.
  • Updated ddl to 1.6.5.
  • Added httpgo 0.2.0.
  • Updated tt-ee to 2.0.0.

  • Updated cartridge-cli to 2.12.9.
  • Updated tt-ee to 1.3.1.

  • Updated tt-ee to 1.3.0.
  • Updated Cartridge to 2.8.3.
  • Updated cartridge-cli-extensions to 1.1.2.
  • Updated CRUD to 1.3.0.
  • Updated queue to 1.3.3.
  • Updated sharded-queue to 0.1.1.
  • Updated membership to 2.4.1.
  • Added tests for Astra Linux 1.7.

  • Updated tarantool-2.10 to 2.10.8.
  • Updated tarantool-master to 3.0.0-alpha3.
  • Updated migrations to 0.6.0.
  • Updated tt-ee to 1.2.0.
  • Updated space-explorer to 1.1.8.
  • Updated cartridge-metrics-role to 0.1.1.
  • Updated Cartridge to 2.8.2.
  • Updated expirationd to 1.5.0.
  • Added sideservice 0.1.0.

  • Updated cartridge-cli to 2.12.7.
  • Updated tarantool-2.11 to 2.11.1.

  • Added CRUD 1.2.0.
  • Added ddl 1.6.3.
  • Added sharded-queue 0.1.0.
  • Added ddl 1.6.4.
  • Updated tt-ee to 1.1.2.
  • Updated cartridge-cli to 2.12.6.

  • Updated tarantool-2.10 to 2.10.7.
  • Updated tarantool-2.11 to 2.11.0.
  • Added Kafka 1.6.6.
  • Added vshard 0.1.24.
  • Added metrics 1.0.0.
  • Added cartridge-metrics-role 0.1.0.
  • Added Cartridge 2.8.0.
  • Added http 1.5.0.

  • Added tt-ee and tt environment configuration.
  • Added CRUD 1.1.1.
  • Added avro-schema 3.1.1.
  • Added expirationd 1.4.0.
  • Added graphql 0.3.0.
  • Added graphqlapi 0.0.10.
  • Added metrics 0.17.0.
  • Added migrations 0.5.0.
  • Added Oracle 1.4.0.
  • Added Cartridge 2.7.9.
  • Added vshard 0.1.23.
  • Added Kafka 1.6.5.

  • Updated tarantool-2.10 to 2.10.6.

  • Updated tarantool-2.11 to 2.11.0-rc2.

  • Added the tarantool-2.11 submodule.

  • Updated tarantool-1.10 to 1.10.15.

  • Updated tarantool-master to 3.0.0-entrypoint.

  • Updated tarantool-2.10 to 2.10.5.

  • Updated tarantool-2.8 to apply 2 hotfixes.

  • Fixed non-interactive installation of the brew package.
  • Changed the owner of the /usr/local/bin directory.
  • Installed awscli@1 instead of awscli since it takes much less time.

  • Added the missing property 2.10 for scope CACHE in CMakeLists.txt.

  • Added expirationd 1.3.1.

  • Used runners with label regular for builds and the tagged release workflow.

  • Added http 1.4.0.
  • Added space-explorer 1.1.7.
  • Added checks 3.2.0.
  • Added metrics 0.16.0.
  • Added Cartridge 2.7.8.

  • Added the -DENABLE_LTO=ON flag for tarantool-ee@master branch to CMakeLists.txt.

  • Upgraded devtoolset from 8 to 9. It was required for upgrading ld from 2.30 to 2.31+ for LTO.

  • Updated tarantool’s master branch to a recent revision.

  • Fixed code style in the Linux and MacOS workflows.

  • Reliably installed packages in MacOS builds.

  • Refactored the way that GC64 builds are defined in the build workflow. There are no changes to the composition of resulting bundles.

  • Added alerting failures in builds on stable branches and integration testing to VK Teams chats.

  • Updated to fresh tarantool master (2.11.0-entrypoint-107-ga18449d)

  • Outdated workflow runs are now canceled to save CI time.

Release SDK by tags:

  • Run workflow in SDK docker container.
  • Uploaded SDK files for 1.10, 2.8, 2.10 versions to release folder.
  • Added consistency check for all versions.

  • On feature branches, SDK is now rebuilt only on relevant changes.

  • Updated Tarantool EE to 2.10.4.

  • Updated bundled OpenSSL to version 1.1.1q.

  • Removed support of Tarantool 2.7.
  • Started using tarantool/actions/prepare-checkout to make builds more stable.

  • Remove the local registry and setup using GitHub registry.
  • Sync rocks cache to S3 and back.
  • Setup using shared runners.
  • Refactor and format ci-linux.yml and ci-macos.yml.

  • Removed Kafka 1.5.0 due to a build issue with Tarantool 2.10.3 and higher.
  • Updated Kafka to version 1.6.2.

  • Updated tuple-keydef to version 0.0.3.

  • Enabled parallel build of rocks for MacOS in CI.

  • Updated Tarantool to 2.10.3.
  • Added a readable error for the case when the flight recoder fails to write data due to insufficient free space on the disk device. Previously, it was sending a SIGBUS error.
  • Fixed a crash in the flight recorder caused by non-thread-safe log recording from multiple threads.

  • Updated Tarantool to 2.10.2.
  • Increased resolution of stored entries in flight recorder.
  • Fixed a bug in the flight recorder that resulted in skipping log entries in case box.cfg.log_level is less than flightrec_log_level.

  • Updated Tarantool to 2.10.1.
  • Updated Cyrus SASL to version 2.1.28.
  • Updated OpenLDAP to version 2.5.13.
  • Updated LZ4 to version 1.9.3. Fixed CVE-2021-3520.
  • Fixed replication reconnect failure after disabling SSL encryption.
  • Fixed a crash that occurred while tyring to start an instance that has a compressed memtx space.
  • Fixed CVE-2022-29242 in GOST SSL engine.
  • Fixed a bug in the flight recorder reader implementation that resulted in a hang or error while trying to open an empty section.

  • Default audit log format was changed to CSV.

  • Implemented user-defined audit events. Now it’s possible to log custom messages to the audit log from Lua.
  • [Breaking change] Switched the default audit log format to CSV. The format can be switched back to JSON using the new box.cfg.audit_format configuration option.
  • Implemented the audit log filter. Now, it’s possible to enable logging only for a subset of all audit events using the new box.cfg.audit_filter configuration option.

  • Implement constraints and foreign keys. Now a user can create function constraints and foreign key relations (gh-6436).
  • Changed log level of some information messages from critical to info (gh-4675).
  • Added predefined system events: box.status, box.id, box.election and box.schema (gh-6260).
  • Introduced transaction isolation levels in Lua and IPROTO (gh-6930).

  • Disabled the deferred DELETE optimization in Vinyl to avoid possible performance degradation of secondary index reads. Now, to enable the optimization, one has to set the defer_deletes flag in space options (gh-4501).

  • Added support of console autocompletion for net.box objects stream and future (gh-6305).

  • Parse method to allow converting string literals in extended iso-8601
    or rfc3339 formats (gh-6731).
  • The range of supported years has been extended in all parsers to cover
    fully -5879610-06-22..5879611-07-11 (gh-6731).

  • Added bundling of GNU libunwind to support backtrace feature on AARCH64 architecture and distributives that don’t provide libunwind package.
  • Re-enabled backtrace feature for all RHEL distributions by default, except for AARCH64 architecture and ancient GCC versions, which lack compiler features required for backtrace (gh-4611).

  • Disabled audit log unless explicitly configured. Before this change, audit events were written to stderr if box.cfg.audit_log wasn’t set. Now, audit log is disabled in this case.
  • Disabled audit logging of replicated events. Now, replicated events (for example, user creation) are logged only on the origin, never on a replica.

  • Banned DDL operations in space on_replace triggers, since they could lead to a crash (gh-6920).
  • Fixed a bug due to which all fibers created with fiber_attr_setstacksize() leaked until the thread exit. Their stacks also leaked except when fiber_set_joinable(..., true) was used.
  • Fixed a crash in mvcc connected with secondary index conflict (gh-6452).
  • Fixed a bug which resulted in wrong space count (gh-6421).
  • Select in RO transaction now reads confirmed data, like a standalone (auotcommit) select does (gh-6452).

  • Fixed potential obsolete data write in synchronous replication due to race in accessing terms while disk write operation is in progress and not yet completed.
  • Fixed replicas failing to bootstrap when master is just re-started (gh-6966).

  • Fixed the behavior of tarantool console on SIGINT. Now Ctrl+C discards the current input and prints the new prompt (gh-2717).

  • Fixed assertion or segfault when MP_EXT received via net.box (gh-6766).
  • Now ROUND() properly support INTEGER and DECIMAL as the first argument (gh-6988).

  • Intervals received after datetime arithmetic operations may be improperly normalized if result was negative

    tarantool> date.now() - date.now()
    ---
    - -1.000026000 seconds
    ...
    

    I.e. 2 immediately called date.now() produce very close values, whose difference should be close to 0, not 1 second (gh-6882).

  • Changed the type of the error returned by net.box on timeout from ClientError to TimedOut (gh-6144).

  • Fixed some binary protocol encryption bugs.
Found what you were looking for?
Feedback